接下來我們繼續來把其他模式說完吧~
這一次我們會聊到CFB、OFB、CTR這三個,然後提供一些其他的模式訊息。
最後就做整個模式的總結。
這邊再次提醒,我們加密算法用AES做範例,文中提到的AES是可以替換其他加密演算法的。
CFB、OFB、CTR都不需要對資料作填充。
為什麼?請繼續看吧~
以下圖片都來自區塊加密法工作模式在此注記。
密文回饋 - Cipher feedback(CFB)
雖然少見,但卻是一個蠻特殊的方法,一樣我們先看圖一。
圖一
能看到CFB做AES的並不是資料而是VI。
做完AES的VI在跟資料作XOR,接著把這個結果當作下一回。
圖二是解密。
圖二
注意了!
解密的方式是把『密文做加密』,在跟資料作XOR,因此只需要AES加密。
使用的方法其實就是OTP的方式,用VI來做出一次性密碼的方式來加密。
雖然我們提到很多次OTP,但一直都沒機會說,但後面應該……沒時間說,在這邊就簡單帶過。
這種加密方式十分安全,雖然資料沒經過AES,但卻能有效的隱藏資料。
這個加密的優點,就是加密的是VI,這樣資料不一定要填充,不填充不影響加密流程。
缺點來說,同樣就是加密不能並行,同時加密時一位元錯後面也會連續的出錯。
輸出回饋模式 - Output feedback(OFB)
這個加密模式跟CFB其實很像,看圖三。
圖三
解密則是圖四。
圖四
跟CFB一樣,解密的方法是用密文做AES加密。
這種方式的好處就是,我能在資料還沒進來之前,就先準備好加密資料的金鑰。
你可以看到圖中假如資料沒進來之前,就能先把VI做加密後傳給下一回。
而資料進來後就把做好的結果跟資料作XOR。
進而模擬出加速加密的模式。
優缺除了跟CFB差不多,但有一項新的擔憂,那就是會不會因為暫存了做好的金鑰,導致暫存器變成了竊取或攻擊的對象。
這個模式蠻多人使用的。
我們先看圖五
圖五
這個模式主要的加密塊是VI進入一個『特別的計數器』,然後生產出來的隨機數或遞增數,跟金鑰進行加密。
圖六是解密
圖六
能看到解密的方是就是把加密的事情再做一次,只是明文換成密文。
而看到著個模式能『並行』加密跟解密,並且也有每一次混亂的功能。
這個方式算是一種中庸的方式。
優點跟OFB差不多,不用填充,而且加密能並行。
缺點的話……可能是因為資料沒經過AES,感覺會覺得不踏實吧。
這邊想提一些其他的模式列表,給大家參考:
上面這幾個不是很少人使用、非主流、不安全、特別專用不然就是有專利等。
這邊就簡單的帶過。
我們把這些工作模式拿來做個簡單的總結吧~
如果要使用同一個金鑰的話ECB不適合。
CBC、OFB、CFB其實很相似,但OFB跟CFB只需要加密不需要解密模塊,能解省代碼或電路。
並行最佳的是CTR。
XTS是用來做隨機訪問的。
據某篇文章指出『OCB』是最好的模式,據文章指出此模式允許一次通過加密和身份驗證。
而我個人推薦的方式CTR,主要是效能,安全性到目前為止都被證明沒問題,並且十分的主流。
好了我們總結完了,已經把基礎密碼學的一部分略略介紹過了。
我們下一章就來做個期末考吧~
如何選擇AES加密模式( CBC ECB CTR OCB CFB ) ?